home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / T-COMAL Today / (k)ta.d64 / use'sound.proc < prev    next >
Text File  |  2007-02-28  |  3KB  |  119 lines

  1. 9000 //
  2. 9005 // PROCEDURES TO EMULATE THE
  3. 9010 // SOUND PACKAGE FROM 2.0
  4. 9015 // FOR VERSION 0.14
  5. 9020 //
  6. 9025 PROC ADSR(STEM,A,D,S,R) 
  7. 9030 P:=5+(STEM-1)*7
  8. 9035 POKE SID+P,A*16+D
  9. 9040 POKE SID+P+1,S*16+R
  10. 9045 ENDPROC ADSR
  11. 9050 //
  12. 9055 PROC VOLUME(STERKTE) 
  13. 9060 POKE SID+24,STERKTE
  14. 9065 ENDPROC VOLUME
  15. 9070 //
  16. 9075 PROC GATE(STEM,JN) 
  17. 9080 P:=4+(STEM-1)*7
  18. 9085 W:=CONTROL(STEM)
  19. 9090 IF JN THEN
  20. 9095 W:=W-(W MOD 2)+1
  21. 9100 ELSE 
  22. 9105 W:=W-(W MOD 2)
  23. 9110 ENDIF 
  24. 9115 POKE SID+P,W
  25. 9120 CONTROL(STEM):=W
  26. 9125 ENDPROC GATE
  27. 9130 //
  28. 9135 PROC SOUNDTYPE(STEM,SRT) 
  29. 9140 P:=4+(STEM-1)*7
  30. 9145 CONTROL(STEM):=2^(SRT+3)
  31. 9150 POKE SID+P,CONTROL(STEM)
  32. 9155 ENDPROC SOUNDTYPE
  33. 9160 //
  34. 9165 PROC USE'SOUND 
  35. 9170 SID:=54272
  36. 9175 FOR P:=0 TO 24 DO POKE SID+P,0
  37. 9180 //
  38. 9185 DIM NOTEN$ OF 3*96, VALUE(0:95)
  39. 9190 DIM CONTROL(3)
  40. 9195 //
  41. 9200 NR:=-1
  42. 9205 FOR OKT:=0 TO 7 DO
  43. 9210 RESTORE  // BASIS
  44. 9215 FOR NT:=1 TO 12 DO
  45. 9220 NR:+1
  46. 9225 READ B
  47. 9230 W:=B/2^(7-OKT)
  48. 9235 VALUE(NR):=W
  49. 9240 ENDFOR NT
  50. 9245 ENDFOR OKT
  51. 9250 //
  52. 9255 FOR NT:=0 TO 95 DO
  53. 9260 READ NOTEN$(NT*3+1:NT*3+3)
  54. 9265 ENDFOR NT
  55. 9270 //
  56. 9275 INIT'VOICES
  57. 9280 //
  58. 9285 BASIS:
  59. 9290 DATA 34334,36376,38539,40830
  60. 9295 DATA 43258,45830,48556,51443
  61. 9300 DATA 54502,57743,61176,64814
  62. 9305 //
  63. 9310 NOTENRIJ:
  64. 9315 DATA "C0","C0#","D0","D0#","E0","F0","F0#","G0","G0#","A0","A0#","B0"
  65. 9320 DATA "C1","C1#","D1","D1#","E1","F1","F1#","G1","G1#","A1","A1#","B1"
  66. 9325 DATA "C2","C2#","D2","D2#","E2","F2","F2#","G2","G2#","A2","A2#","B2"
  67. 9330 DATA "C3","C3#","D3","D3#","E3","F3","F3#","G3","G3#","A3","A3#","B3"
  68. 9335 DATA "C4","C4#","D4","D4#","E4","F4","F4#","G4","G4#","A4","A4#","B4"
  69. 9340 DATA "C5","C5#","D5","D5#","E5","F5","F5#","G5","G5#","A5","A5#","B5"
  70. 9345 DATA "C6","C6#","D6","D6#","E6","F6","F6#","G6","G6#","A6","A6#","B6"
  71. 9350 DATA "C7","C7#","D7","D7#","E7","F7","F7#","G7","G7#","A7","A7#","B7"
  72. 9355 //
  73. 9360 ENDPROC USE'SOUND
  74. 9365 //
  75. 9370 PROC NOTE(STEM,N$) 
  76. 9375 NR:=((N$ IN NOTEN$)-1)/3
  77. 9380 P:=(STEM-1)*7
  78. 9385 POKE SID+P,VALUE(NR) MOD 256
  79. 9390 POKE SID+P+1,VALUE(NR) DIV 256
  80. 9395 ENDPROC NOTE
  81. 9400 //
  82. 9405 PROC INIT'VOICES 
  83. 9410 ADSR(1,0,4,12,10)
  84. 9415 ADSR(2,10,8,10,9)
  85. 9420 ADSR(3,1,9,1,9)
  86. 9425 FOR STEM:=1 TO 3 DO
  87. 9430 PULSE(STEM,2048)
  88. 9435 SETFREQUENCY(STEM,0)
  89. 9440 ENDFOR STEM
  90. 9445 VOLUME(15)
  91. 9450 SOUNDTYPE(1,1)
  92. 9455 SOUNDTYPE(2,2)
  93. 9460 SOUNDTYPE(3,3)
  94. 9465 ENDPROC INIT'VOICES
  95. 9470 //
  96. 9475 PROC PULSE(STEM,F) 
  97. 9480 P:=2+(STEM-1)*7
  98. 9485 POKE SID+P,F MOD 256
  99. 9490 POKE SID+P+1,F DIV 256
  100. 9495 ENDPROC PULSE
  101. 9500 //
  102. 9505 PROC SETFREQUENCY(STEM,F) 
  103. 9510 P:=(STEM-1)*7
  104. 9515 POKE SID+P,F MOD 256
  105. 9520 POKE SID+P+1,F DIV 256
  106. 9525 ENDPROC SETFREQUENCY
  107. 9530 //
  108. 9535 PROC DISCARD 
  109. 9540 SID:=54272
  110. 9545 FOR P:=0 TO 24 DO POKE SID+P,0
  111. 9550 ENDPROC DISCARD
  112. 9555 //
  113. 9560 // EXAMPLE:
  114. 9565 // RUN
  115. 9570 //USE'SOUND
  116. 9575 //NOTE(1,"C4")
  117. 9580 //GATE(1,1)
  118. 9585 //GATE(1,0)
  119.